Рейтинговые книги
Читем онлайн Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 27 28 29 30 31 32 33 34 35 ... 59
с EXE установщиком приложения, который установит на компьютер настольное автономное приложение с EXE-файлом и JavaFX средой выполнения.

Также можно сгенерировать MSI установщик вместо EXE установщика.

Для этого нужно скачать и установить инструмент WiX и также добавить его в системную переменную Path.

Для создания автономного приложения В IntelliJ IDEA в свойствах проекта нужно добавить артефакты JavaFX приложения.

И во вкладке JavaFX указать класс приложения, название и другие свойства, а также указать нативный пакет.

После чего в меню Build выбрать Build Artifacts.

В результате в папке проекта outartifacts будет создана папка bundles с установщиком.

Компоненты графического интерфейса пользователя

Компоненты графического интерфейса пользователя платформы JavaFX представлены такими пакетами JavaFX API как scene.control, scene.chart, scene.image, scene.layout, scene.media, scene.shape, scene. text, scene. web и stage.

Все компоненты GUI-интерфейса являются объектами Node узлов графа сцены и характеризуются идентификатором, CSS-стилем, границами, визуальными эффектами, прозрачностью, трансформациями, обработчиками событий, состоянием, режимом наложения и участием в анимации.

Кнопка Button создается с помощью конструктора, в котором можно указать надпись кнопки и значок.

Надпись кнопки также можно установить методом setText.

Методом setOnAction к кнопке присоединяется слушатель нажатия кнопки.

Значок также можно установить для кнопки методом setGraphic.

Методы setLayout узла определяют координаты перемещения узла для его компоновки.

Метод setPrefSize устанавливает предпочтительные размеры компонента в компоновке.

Метод setStyle устанавливает строковое представление стиля CSS, связанного с этим конкретным узлом.

Платформа JavaFX тесно интегрирована с каскадными таблицами стилей CSS, обеспечивающими для узлов графа сцены их внешний вид.

И об этом мы поговорим позже.

Давайте рассмотрим некоторые другие интересные методы компонентов, унаследованные от родительских классов.

Метод setBlendMode узла определяет режим наложения этого узла на сцену позади него.

В данном случае результирующий фон кнопки получается на основе темных составляющих цветов фона кнопки и фона сцены.

Этот метод работает немного по-другому для узла группы Group.

Если этот узел является группой, тогда все узлы группы будут размещены во временном буфере, используя их собственные режимы наложения, а затем этот временный буфер будет скомпонован в сцену, используя режим наложения группы.

Метод setClip указывает узел, который будет использоваться для определения формы обрезки для данного узла.

Причем, определение узла-маски для узла нивелирует установку его режима наложения.

В данном случае мы накладываем на кнопку маску в виде окружности.

Метод setCursor определяет форму курсора мыши для этого узла и его подузлов.

Метод setEffect определяет визуальные эффекты для узла.

Об эффектах мы поговорим позже.

В данном случае к кнопке применяется эффект тени.

Метод setManaged определяет, будет ли компоновка этого узла управляться его родителем.

При установке свойства managed со значением false не учитываются максимальные, минимальные и предпочтительные размеры кнопки.

Если значение этого свойства false, вам нужно будет самостоятельно определить размер и положение узла.

Сделать это можно методом resize.

Элементы контроля наследуют от класса Region, который определяет такие свойства, как ширина и высота узла, которые устанавливаются родительским узлом во время компоновки.

Если приложение хочет изменить размеры региона при компоновке, оно должно переопределить предпочтительный диапазон размеров, установив свойства минимальных, максимальных и предпочтительных ширины и высоты.

Напрямую изменить ширину и высоту узла можно с помощью метода resize, который заставляет родительский узел во время компоновки установить ширину и высоту региона.

Компоновка графа сцены автоматически запускается системой, как только приложение создает и отображает сцену.

Граф сцены обнаруживает динамические изменения узлов, которые влияют на макет (например, изменение размера или содержимого), и вызывает метод requestLayout, который отмечает эту ветку графа как требующую перекомпоновки.

После чего происходит перекомпоновка, включая все дочерние узлы.

Граф сцены поддерживает как изменяемые, так и не изменяемые по размеру узлы.

Метод isResizable узла возвращает, является ли данный узел изменяемым по размеру или нет.

Элементы управления и компоновки изменяются по размеру, но формы, текстовые объекты и группы не изменяются по размеру

Изменяемый по размеру узел поддерживает диапазон допустимых размеров – это минимальные, предпочтительные и максимальные размеры, позволяя своему родительскому узлу изменять его размер в пределах этого диапазона во время компоновки.

Поэтому все узлы, которые расширяют Region или Control и устанавливаются как корневой узел, автоматически будут подгоняться под размеры сцены.

Все узлы, которые расширяют группу, не будут подгоняться под размеры сцены.

Если вы не хотите, чтобы приложение изменялось в соответствии с размером сцены, добавьте группу в качестве корневого узла.

Что касается минимальных, предпочтительных и максимальных размеров узла, какие размеры берутся за основу, зависит от родительского узла.

Например, группа использует предпочтительный размер дочернего узла, а панель компоновки StackPane использует максимальные размеры дочернего узла, которые для некоторых узлов по умолчанию равны предпочтительным размерам.

Та же панель компоновки StackPane не обращает внимание на минимальные размеры, а панель компоновки HBox соблюдает их.

Если явно не устанавливать минимальные, предпочтительные и максимальные размеры, тогда узел сам вычисляет эти размеры на основе своего содержимого, и эти размеры его родитель будет использовать для изменения размера узла во время компоновки.

Теперь, узел имеет свойство layoutBounds или границы – это прямоугольные границы, которые используются для вычислений компоновки для этого узла.

Компоновочные границы layoutBounds определяются в локальной системе координат узла и могут отличаться от визуальных границ узла и вычисляются по-разному в зависимости от типа узла.

Если тип узла имеет изменяемые размеры, тогда границы layoutBounds всегда совпадают с фактической шириной и высотой узла.

Если узла имеет не изменяемые размеры, тогда границы layoutBounds вычисляются на основе геометрических свойств узла.

Компоновочные границы layoutBounds соответствуют геометрическим границам компонента без учета эффектов, масок, трансформаций, но с учетом установленных размеров.

Далее узел имеет свойство boundsInLocal – это границы узла, которые также определяются в локальной системе координат узла, однако включают в себя контур, эффекты и маски, но не учитывают трансформации.

И наконец, узел имеет свойство boundsInParent – это границы узла относительно родительского узла, которые определяются в системе координат родительского узла и учитывают эффекты, маски и трансформации.

Метод setFocusTraversable со значением true определяет, что фокус можно перемещать с помощью стрелок клавиатуры и клавиши Tab.

Надо заметить, что при наведении фокуса на кнопку свойство focused принимает значение true.

При нажатии кнопки с помощью клавиши Enter клавиатуры свойство hover остается со значением false, а при нажатии кнопки мышкой свойство hover принимает значение true.

При нажатии кнопки с помощью мышки значение свойства pressed остается false, а значение свойства armed становится true, так как кнопка активируется не нажатием мышки, а нажатием и освобождением мышки.

При установке свойства mouseTransparent со значением true кнопка активируется только с помощью клавиатуры.

Метод setOpacity устанавливает прозрачность узла.

Присоединение эффекта к узлу может нивелировать установку прозрачности узла. В данном случае это происходит при установке тени для кнопки.

Методы setRotate, setLayout, setScale, setTranslate определяют трансформации узла.

И о трансформациях мы тоже поговорим позже.

Метод setTooltip добавляет всплывающую подсказку к элементу контроля.

Метод setAlignment указывает, как текст и графика в кнопке должны быть выровнены, когда есть пустое

1 ... 27 28 29 30 31 32 33 34 35 ... 59
На этой странице вы можете бесплатно читать книгу Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин бесплатно.

Оставить комментарий